/**
 * 替换字符串中的空格
 */
public class Solution5 {
    /**
     * 用String的split方法分隔空格，用StringBuffer组合新字符串。
     * @param str
     * @return
     */
    public String replace1(String str){
        String[] s = str.split(" ");
        StringBuffer sb = new StringBuffer();
        for (String element : s){
            sb.append(element);
            sb.append("%20");
        }
        int i = sb.lastIndexOf("%20"); //返回子字符串最后出现的位置
        String result = sb.substring(0, i); //截取最后一个%20前面的子字符串
        return result;
    }

    /**
     * 设置p1指向原字符串末尾，先顺序遍历字符串，遇到一个空格，将新字符串长度加2；
     * 然后设置p2指向新字符串末尾；
     * p1、p2同时逆序向前遍历，p1指向字符不是空格时，将p1指向的字符复制到p2，p1指向字符时，向p2位置插入%20。
     * @param str
     * @return
     */
    public String replace2(String str){
        StringBuffer sb = new StringBuffer();
        int p1 = str.length() - 1;
        for (int i=0;i<=p1;i++){
            if (str.charAt(i)==' '){
                sb.append("   ");
            }
            else
                sb.append(" ");
        }
        int p2 = sb.length() - 1;
        while (p1>=0){
            char c = str.charAt(p1--);
            if (c!=' '){
                sb.setCharAt(p2--, c);
            }
            else {
                sb.setCharAt(p2--, '0');
                sb.setCharAt(p2--, '2');
                sb.setCharAt(p2--, '%');
            }
        }
        return sb.toString();
    }

//    public static void main(String[] args){
//        Five five = new Five();
//        String str = "We are happy now.";
//        System.out.println(five.replace2(str));
//    }
}
